package com.yao2san.simdif.service.synchronizer;

import com.yao2san.simdif.entity.ColumnInfo;
import com.yao2san.simdif.entity.TableInfo;
import com.yao2san.simdif.service.synchronizer.DriverInstance;

import java.sql.Driver;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 数据源同步器
 */
public interface DatasourceSynchronizer extends AutoCloseable {
    /**
     * 注册驱动
     */
    void registerDriver() throws SQLException, ClassNotFoundException, InstantiationException, IllegalAccessException;

    /**
     * 卸载驱动
     *
     * @param driver 已注册的驱动
     * @throws SQLException 异常信息
     */
    void unregisterDriver(Driver driver) throws SQLException;

    /**
     * 获取表
     *
     * @param database 数据库名称
     * @return 表信息
     */
    List<TableInfo> getTables(String database);

    /**
     * 获取列
     *
     * @param database  数据库名称
     * @param tableName 表名称
     * @return 列信息
     */
    List<ColumnInfo> getColumns(String database, String tableName);

}
